#ifndef _TD_XMLDOC_H_
#define _TD_XMLDOC_H_

/************************************************************************/
/* STL                                                                  */
/************************************************************************/
#include <string>
#include <iostream>
#include <fstream>

/************************************************************************/
/* tinyXML                                                              */
/************************************************************************/
#include "Core/TinyXML/tinyxml.h"
#include "Core/TinyXML/tinystr.h"

/************************************************************************/
/* PROJECT                                                              */
/************************************************************************/
#include "Resources/Resource.h"

using namespace std;

namespace TD_Resources {

   class XMLDoc : public Resource {

      //tinyXML document
      TiXmlDocument *m_pXMLDoc;

      /************************************************************************/
      /* Private functions                                                    */
      /************************************************************************/

   protected:

      inline TiXmlDocument * const getXMLDoc() const {
         return m_pXMLDoc;
      }

   public:

      /************************************************************************/
      /* Constructors				                                            */
      /************************************************************************/
      //Constructor default
      explicit XMLDoc();

      //Copy constructor
      explicit XMLDoc(const XMLDoc &rhs);

      //Assignment constructor
      XMLDoc & operator=(const XMLDoc &rhs);

      //Initialization constructor
      explicit XMLDoc(const string &resourceName);

      //Destructor 
      ~XMLDoc();

      /************************************************************************/
      /* Access functions                                                     */
      /************************************************************************/


      /************************************************************************/
      /* Functionalities                                                      */
      /************************************************************************/

      /**Loads a file*/
      bool loadFile();
      bool loadFile(const string &resourceName);

      TiXmlElement *FirstChildElement(const char* name);

   };
}
#endif